package com.sikaryofficial.backend.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sikaryofficial.backend.domain.dto.req.information.ArticleAssociateListReq;
import com.sikaryofficial.backend.domain.dto.req.information.ArticleAuditListReq;
import com.sikaryofficial.backend.domain.dto.req.information.ArticleBrandSpecialListReq;
import com.sikaryofficial.backend.domain.dto.req.information.ArticleOwnerListReq;
import com.sikaryofficial.backend.domain.dto.req.information.TopicListReq;
import com.sikaryofficial.backend.domain.dto.resp.information.ArticleGetLikesDTO;
import com.sikaryofficial.backend.domain.dto.resp.information.TopicBackendDTO;
import com.sikaryofficial.backend.domain.dto.resp.information.TopicDTO;
import com.sikaryofficial.backend.domain.entity.Article;
import com.sikaryofficial.backend.domain.vo.infomation.ArticleStatisticsVO;
import com.sikaryofficial.system.api.model.infomation.ArticleAssociateResp;
import com.sikaryofficial.system.api.model.infomation.ArticleDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 文章Service接口
 *
 * @author qinjinyuan
 * @date 2024-04-10
 */
public interface IArticleService extends IService<Article> {
    /**
     * 文章topic分页列表
     *
     * @param customerPage
     * @param req
     * @return
     */
    IPage<TopicDTO> topicList(Page<TopicDTO> customerPage, TopicListReq req);

    IPage<ArticleDTO> articleList(Page<ArticleDTO> customerPage, ArticleAuditListReq req);

    IPage<TopicBackendDTO> topicBackendList(Page<TopicBackendDTO> customerPage, TopicListReq req);

    /**
     * 个人中心文章列表
     *
     * @param customerPage
     * @return
     */
    IPage<ArticleDTO> ownerList(Page<ArticleDTO> customerPage, ArticleOwnerListReq req);

    IPage<ArticleGetLikesDTO> getLikeList(Page<ArticleGetLikesDTO> customerPage, Long userId);

    IPage<ArticleAssociateResp> associatePage(Page<ArticleAssociateResp> customerPage, ArticleAssociateListReq req);

    List<ArticleStatisticsVO> articleContentTypeStatic(Integer source, Integer auditStatus, Long userId);

    /**
     * 品牌专栏-文章分页列表
     *
     * @param customerPage
     * @param req
     * @return
     */
    IPage<ArticleDTO> brandSpecialPage(Page<ArticleDTO> customerPage, ArticleBrandSpecialListReq req);

    /**
     * 根据ID，获取对应数据
     *
     * @param objIds
     * @return
     */
    List<ArticleDTO> getArticleByIds(List<Long> objIds, Integer tenantId);
}
